﻿#pragma once
#include <stdio.h>
#include <stdint.h>
#include <string>
#include <vector> 
class CFileUtil
{
public:
    CFileUtil() {}
    virtual ~CFileUtil() { closeFile(); }
public:
    bool openFile(const char* filePath, const char* mode);
    bool closeFile();

    std::size_t readWholeFile(std::string& strOut);
    std::size_t readWholeFile(char* buf, std::size_t& sizeOut);
    std::size_t readAllLines(std::vector<std::string>& vecOut);

    std::size_t readSome(char* strOut, std::size_t n);
    std::size_t readSome(std::string& strOut, std::size_t n);


    //这个新建一个文件 appendWrite竟然会多有很多字节 
    std::size_t appendWrite(const char* data, std::size_t size);
    std::size_t writeLines(const std::vector<std::string>& vecOut);
    std::size_t truncateWrite(const std::string& strContent);
    std::size_t truncateWrite(const char* data, std::size_t size);

    std::size_t writeSome(const char* data, std::size_t size);

    bool fseekRw(std::size_t startPos);

    void forceFlush();


    std::size_t writeFormat(const char* format, ...);
    std::size_t getFileSize();

protected:
    FILE* m_file = nullptr;
    std::string m_strFileName;
};
